home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / tools / czesc_4 / softboot3.31 / readme.softboot < prev    next >
Text File  |  1992-11-09  |  26KB  |  482 lines

  1.                         SoftBoot Documentation   
  2.  
  3. Last Updated 11/09/92 for SoftBoot 3.31
  4.  
  5. INTRODUCTION
  6.  
  7. Well, you've just bought that 68040 card for your A3000 or just thought
  8. putting ROMs in your A3000 was a good idea. Commodore has begun to ship A3000s
  9. with 2.04 (or later) Roms built-in. You've lost your SuperKickstart feature, 
  10. haven't you? This means that you can't run, in a recoverable fashon,  new Beta 
  11. versions of the A3000 AmigaDos Operating System or can't even run measley old 
  12. 1.3. Until Now. Introducing 'SoftBoot', the new SuperKickstart Emulator for the
  13. A3000. Supporting the 68040 and the built-in 68030 CPU of the A3000, you can 
  14. now run any version of the operating system (including 1.3!) in a completely 
  15. reboot-survivable way. Many hundreds of hours and many hundreds of power cycles
  16. on my poor old A3000 have resulted in a near bullet-proof implementation. The 
  17. process of reboot recovery is clean and unobtrusive to the new OS. There is no
  18. old OS aftertaste, so to speak. Cold|Cool|WarmCapture are not used. Program 
  19. failure will result only if the ROM image, ExecBase structure, MMU tables, 
  20. or reboot recovery routines are corrupted by an errant program.
  21.  
  22. What do you need to run SoftBoot? Besides this very powerful program, you
  23. need SuperKickstart files. SoftBoot will load the devs:Kickstart file
  24. for 2.04+ versions of AmigaDos (including 3.0), or it can load the
  25. Devs:Kickstart1.3 file for AmigaDos 1.3. Note these must be the SuperKickstart 
  26. versions with attached 'bonus' areas. Some interesting variations will be 
  27. discussed later on. 
  28.  
  29. You must use OldFileSystem or FastFileSystem for your system paritions. I 
  30. highly recommend creating a System2.0: partition and a System3.0: partition 
  31. and using HDToolBox to enable the one you wish to boot from. If you create a 
  32. unique filesystem partition, like MS_DOS or DCFileSystem partitions, PLEASE: 
  33. MAKE SURE THAT THE FILESYSTEM IS LOADED INTO THE RIGID DISK BLOCK (RDB)!!!!! 
  34.  
  35. Failure to do so may render the data unreadable under 2.04 and who knows what 
  36. damage may occur. Softboot is not responsible for any damage if that occurs. In 
  37. general, this software is provided as-is and the user accepts all risks in 
  38. using it.
  39.  
  40. SoftBoot V3.31 and later
  41.  
  42. There are a number of powerful operations possible with SoftBoot. Some
  43. which work on other machines besides the A3000. For example, the SOFTBOOT
  44. parameter performs a soft reset of any Amiga. If you try to use a 
  45. feature of SoftBoot that your Amiga does not support, it will (usually)
  46. tell you. If you invoke SoftBoot with the '?' parameter, you will get
  47. the following text printed on your Shell:
  48.  
  49. SoftBoot V3.31 [NOCACHEZ2][KILLROM][NOCATCHROM][ONETHREE]
  50.                [BOTH][SOFTBOOT][NOBUSERRORS][FASTROM]
  51.                [ENTTX][OVRMMU][NOCACHEZ3][Z3ALL]
  52.  
  53. Each of the parameters will be discussed next:
  54.  
  55. FASTROM
  56.  
  57. The FASTROM parameter causes the current motherboard ROM to be copied into
  58. fast RAM and remapped with the MMU. While you can do this with a 68030 and
  59. the 'CPU' program, SoftBoot works with both 68030 and 68040 systems. It
  60. will even accomodate non-A3000 68020/68851 systems! The FASTROM setup will 
  61. die on any hardware reset (Ctrl-LAmiga-RAmiga). 
  62.  
  63. KILLROM 
  64.  
  65. To kill any MMUed ROM setup and reboot the machine, use the KILLROM parameter.
  66. Note that it takes effect with no time delay. Make sure all files are closed
  67. and that there is time for the final write to occur before performing this
  68. command. KILLROM wipes out RAD:, too.
  69.  
  70. SOFTBOOT
  71.  
  72. The SOFTBOOT Parameter will work with any Amiga. It simply performs a
  73. system friendly reboot. It also takes effect immediately. The SOFTBOOT
  74. parameter is to be used primarily for forcing a MMUed OS to load a floppy
  75. disk-based game or program without going through the reboot recovery 
  76. procedure. This guarantees that you will get the purest OS that money
  77. can buy! The same warning in KILLROM applies here: Make sure all files are
  78. closed and there is time for the final write to occur before executing
  79. the SOFTBOOT parameter.
  80.  
  81. This routine simply calls the ColdReboot() function. Avoid making 3.0 EPROMS
  82. and running SoftBoot's FASTROM option. This option just temporarily allocates 
  83. the memory for the ROM and MMU tables. If the MMU is on, then upon reboot, 
  84. that same memory will be up for grabs and will likely be stomped on by some 
  85. application program, corrupting the system. 
  86.  
  87. By the same token, it is OK to FASTROM a softloaded OS, although the
  88. reasoning for doing so is questionable. ColdReboot() is SetFunction()ed when
  89. a softloaded OS is made, so any foreign MMU environment will be converted
  90. back to the protected MMU environment prior to system reset.
  91.  
  92. OVRMMU
  93.  
  94. The default operation of SoftBoot is to check to see if the MMU is in
  95. use and print a warning message and quit if it is in use. Because 
  96. 68040.library may build a MMU table, you may want to force SoftBoot to
  97. kill a foreign MMU setup. To do so, use the OVRMMU option. The SoftBoot 
  98. options which do not result in a system reset are written as carefully
  99. as possible to build a new MMU setup and switch over without crashing
  100. the machine. Using the OVRMMU option, you can run multiple FASTROMs
  101. until you fragment/run out of memory.
  102.  
  103. Note that with Softboot3.31, you can change Dev:kickstart files and
  104. load another MMU setup over a previously existing softloaded rom. The
  105. safer and more recommended way is to copy the kickstart file and
  106. issue a SoftBoot KILLROM command and have your startup-sequence SoftBoot 
  107. command reload the new OS file.
  108.  
  109. ONETHREE
  110.  
  111. The most difficult mode to support: ONETHREE forces SoftBoot to load the 
  112. Devs:Kickstart1.3 file instead of the 2.0 or 3.0 SuperKickstart. Certain 
  113. things need to be known before using this parameter: 1) Reboot recovery is 
  114. via ColdCapture() for this option only. Any program which obliterates 
  115. ColdCapture() will cause the motherboard ROM OS to be reloaded on the 
  116. next hardware reset. 2) All disk partitions will be visible; this
  117. means that 1.3 will probably try to boot from your 2.0 partition. I
  118. didn't want to monkey with your Rigid Disk Blocks, so you need to do
  119. one of two things: You can use HDToolBox to increase the Boot Priority
  120. of your 1.3 partition before running 1.3, or you can make a boot floppy
  121. which performs the assigns to your 1.3 partition and then jump to its
  122. startup-sequence. If you choose the former, you must hold down both
  123. mouse buttons when rebooting back to 2.0 so you can select the 2.0 
  124. partition to boot from. 
  125.  
  126. The 68040 doesn't like the Bonus code real well. Kickstart 1.3 will only load 
  127. off a hard disk drive if it is the first partition on the drive and 
  128. needs to be the highest SCSI address, with six being preferable. If you
  129. forget to change with HDTOOLBOX, a repeatable guru may be possible in 040 
  130. mode. Stick any bootable floppy into the drive to stop it. The drives
  131. are accessable, and softboot can be directly addressed from the CLI.
  132.  
  133. However, it may just be easiest to boot from a 1.3 Workbench floppy disk. 
  134. By the way, ZorroIII is not supported in 1.3. Other than that, it works 
  135. just fine folks! Really! Remember the 68040 and 1.3 barely work together.
  136. The 68030 and 1.3 work pretty OK: Crashes are pretty frequent. Be forewarned 
  137. and forearmed! 
  138.  
  139. All partitions must have the filesystem loaded in the rigid disk block!
  140. The stability of other than OFS and FFS partitions cannot be guranteed under
  141. OS 1.3! Personally, I only would use 1.3 for floppies and try not to use the
  142. hard disk at all. However, I have a lot of CDTV discs which only play under
  143. 1.3, so I will occationally use a special partition I've set up. 
  144.  
  145. AmigaDos 2.0 AND ON
  146.  
  147. Actually invoking SoftBoot with no parameters or any of the remaining 
  148. ones not yet discussed will load the Devs:Kickstart file for an alternate
  149. operating system. The following describes what these parameters are and how, 
  150. why and when to use them:
  151.  
  152. BOTH
  153.  
  154. One of the really interesting features of SoftBoot is that it works 
  155. with both the 68030 and 68040 processors. If you invoke the BOTH parameter,
  156. MMU tables will be built to support both the 68040 and the 68030. There
  157. really isn't much of an overhead as the 030 MMU tables require only 
  158. 32K bytes of additional RAM. The 68040 can be a bit better or quite a bit 
  159. worse. The 68040 MMU tables require 9K for the basic A3000 motherboard. 
  160. That's not too bad! However, if you have a Zorro III  card, SoftBoot must
  161. build additional MMU tables to the tune of 66K bytes per 256 megabyte
  162. segment. This memory is all dynamically allocated as required.
  163.  
  164. The great thing about the BOTH parameter is when you have a 68040 card that
  165. can be switched back and forth to/from the 68030: If your switch program
  166. works, you can stay in the same RAM-based OS  without having to go 
  167. through the motherboard ROM! (OK for just a few milliseconds! Truth in
  168. advertising, you know!).
  169.  
  170. If you don't invoke the BOTH parameter, then MMU tables will be built for
  171. whichever CPU is currently in operation. The question naturally arises:
  172. What if I switch CPUs? Heaven forbid, disaster surely won't come will
  173. it? No. The RAM formerly used for the ROM and MMU tables are always allocated.
  174. You will see a 532K (approx) loss of ram, but will be running on the 
  175. motherboard ROM. Switch back to the other CPU and the Ram-based OS will
  176. again take effect! Neat Huh! If you want all your RAM back, use the
  177. SoftBoot KILLROM option. You will lose everything in both modes then.
  178.  
  179. So, in conclusion, You can have one CPU running a RAM-based OS, the
  180. other, or both running RAM-based. Or be a spoil sport and run 
  181. neither.
  182.  
  183. Note that with the Workbench V39.26 and later (Commodore's) 68040.library, 
  184. Progressive Peripherals 68040s will become unable to switch modes. You can
  185. fix this by running a 'SoftBoot FASTROM OVRMMU'. SoftBoot's default setup will 
  186. then allow the PPS Switch program to work. Since you are rebooting to change 
  187. processors, the loss of 600K for the FASTROM will be temporary.
  188.  
  189. ENTTX
  190.  
  191. The MMU tables that 68040.library builds all assume ZorroIII I/O cards
  192. are present. One of the things it does is turn the transparent translation
  193. registers off. Theoretically there is a performance hit, as it only
  194. takes one clock cycle to pass through the transparent translation registers
  195. and three memory cycles to obtain a translation if the MMU page translation
  196. is not stored in the 68040 address translation cache. At first glance, there
  197. should be a major performance hit. Apparently Motorola did a wonderful
  198. job in the ATC design as it stays there over 90 percent of the time, 
  199. minimizing the perfomance loss to about 2 percent. If you do not have
  200. Zorro III I/O, using the ENTTX option turns on the transparent
  201. translation registers, giving back some speed. The down side is that this 
  202. may affect how reads/writes to non-existant memory areas are handled in the 
  203. A3000. 68040.library's MMU tables will catch all accesses to non-existant
  204. RAM without going through the jerky 350 msec hardware bus timeout. You will
  205. lose this, in some memory areas, without using the NOBUSERRORS option, 
  206. discussed elsewhere.
  207.  
  208. NOCACHEZ2
  209.  
  210. If a Bridgeboard is detected, the ZorroII space will be automatically declared 
  211. non-cacheable. Otherwise, it is fully data and instruction cacheable 
  212. (No parameter required!). If you have any other I/O device that winds up in
  213. the area reserved for Zorro II RAM (0x00200000-0x009fffff), then you need the 
  214. NOCACHEZ2 option. Note this also works for the 68040/1.3 mode. The 68030/1.3 
  215. MMU setup is defined in the 'Bonus' section of the Devs:Kickstart1.3 file and 
  216. is not alterable.
  217.  
  218. NOCACHEZ3
  219.  
  220. The default behavior of SoftBoot is to cache all Zorro III space. If you
  221. have a ZorroIII I/O card, you may need to use the NOCACHEZ3 option. This
  222. option causes both the MMU tables and the transparent translation registers
  223. to be be declared as non-cachable. Note that this parameter has an affect
  224. when creating a softloaded operating system and also when the ENTTX option
  225. is invoked. In the latter case, the data transparent translation regisers
  226. are declared serialized noncachable. If you are running the newer 
  227. 68040.library, it will make the proper I/O sections non-cachable, and
  228. leave Zorro III RAM at nearly full speed.
  229.  
  230. Z3ALL
  231.  
  232. There has been some talk about possible changes in the location of ZorroIII
  233. autoconfiguration addresses to suit the 68040's tranparent translation
  234. registers. When you run SoftBoot, it assumes the memory map is going to
  235. remain the same from one OS to the next. There is no way to figure out where
  236. the next OS might place a Zorro III board until it has gone through the
  237. autoconfiguration process, in which case it is too late for SoftBoot to
  238. build MMU tables. The only solution is to use the Z3ALL parameter until you
  239. can get new ROMS/EPROMS in your A3000 which reflect the new memory
  240. mapping. The Z3ALL parameter builds MMU tables for ALL of Zorro III space.
  241. This is very expensive and requires over a megabyte of additional RAM. 
  242. This is the only way to make ZorroIII work if the memory map does change.
  243. That way, there will be valid MMU tables no matter where the OS decides to
  244. put a board. Note that the Z3ALL parameter is a NOP if there isn't a Zorro III 
  245. card in your machine.
  246.  
  247. NOBUSERRORS
  248.  
  249. When I first got my 040, I was disgusted at the number of applications
  250. which die with an 80000004 or 80000003 Guru. Through some careful sleuthing,
  251. I discovered that these were caused by the A3000 Bus Error control hardware.
  252. I also discovered that the 040 was very difficult to recover from a bus error
  253. as an RTE command just reruns the cycle. Not good unless you remap RAM
  254. to all of the memory space (68040.library does something just like that). Even 
  255. better is that all 2.0 Kickstarts to date assume an 030 Stack frame in the 
  256. Bus Error exception handler. Apparently the 030 can fiddle with the stack and 
  257. 'fake' the access. With an 040, this 'Twiddling' causes the aforementioned 
  258. Gurus. At least it winds up in a mode that brings up a requester from which 
  259. you can terminate the task or reboot. The motherboard Bus Error generation 
  260. hardware responds whenever an access is made to an address in the machine 
  261. which doesn't physically exist. This will happen on a read or a write. Yucch!
  262. Since the ROM just ignores the cycle for the 68030, why even activate the
  263. bus error hardware? Even worse, the hardware bus cycle takes 350 milliseconds
  264. to generate. That is why you get those funky and jerky mouse pointers
  265. when accesses to non-existant memory occurs.
  266.  
  267. Fortunately, there is a solution. Turn off the Bus Error generation hardware.
  268. The NOBUSERROR parameter will perform this magic for you, enabling all
  269. those programs which run on 68040s on the A2000 and don't on the stock-
  270. programmed A3000 motherboard to have a chance at working. No guarantees!
  271.  
  272. Any program which accesses RAM outside of its own space is broke. Many
  273. programs do not hurt as they only _READ_ these locations. As far as
  274. writes goes, well there isn't RAM there anyway. But it is indicative of 
  275. a sick program. As a result, the default behavior is to let bus errors 
  276. crash a task. Use of the NOBUSERROR parameter is at your own risk.
  277. Note that the NOBUSERROR parameter is a NOP when the 68030 or 1.3 is in
  278. use.
  279.  
  280. NOCATCHROM
  281.  
  282. The NOCATCHROM parameter enables a custom error trapping handler to
  283. be installed in the Bus Error exception vector. This handler only
  284. catches and corrects writes to ROM space or areas declared invalid in
  285. the MMU tables. A real genuine BUS error or any other type of exception
  286. which generates a 68040 access error besides an invalid access or an illegal
  287. write will be forwarded to the ROM Guru-handler. This is the default
  288. operation of SoftBoot. If the NOCATCHROM parameter is involked, SoftBoot
  289. is prevented from patching the vector. Again, this command is a NOP 
  290. under 1.3 or the 68030 processor.
  291.  
  292. TRICKS AND TIPS
  293.  
  294. 1) Now that you've fallen in love with some future OS, and are very tired
  295. at having to open a CLI/Shell and run SoftBoot manually - have I got a 
  296. trick for you! If you put SoftBoot in the Startup-Sequence, just ahead of
  297. SetPatch, you will get a power-on SuperKickstart-like effect. The 
  298. Workbench screen does not normally open until IPrefs is run. The screen
  299. stays white (3.0+ is black). When SoftBoot is loaded via the Startup-Sequence,
  300. it will load your favorite version of the OS and reboot. You will see a second
  301. dark grey/light grey/white sequence, but you will not see the
  302. Workbench screen until you are softloaded. The second time through, 
  303. SoftBoot will detect the MMU is in operation and abort with no operation,
  304. allowing the startup-sequence to continue! The following is the
  305. suggested use for AmigaDos 2.0 and 3.0:
  306.  
  307. SoftBoot > nil:  [OPTIONS]
  308. SetPatch > nil:
  309. SoftBoot > nil: ENTTX [OPTIONS]
  310.  
  311.  
  312. Note: BOTH is a recommended option if you can switch CPUs and want to always
  313. stay in the same OS.
  314.  
  315. The second SoftBoot command (ENTTX) is to reenable the transparent translation 
  316. registers. This is optional. The only parameter for SoftBoot ENTTX is NOCACHEZ3.
  317.  
  318. Note: When installing a new Workbench via the Installer, do not let it
  319. automatically reboot the machine when it is finished. Exit and edit the new 
  320. s:startup-sequence to reflect the SoftBoot command lines. If there is a
  321. new kickstart file, copy it to devs:. Then reboot the machine into the
  322. new OS via the SoftBoot KILLROM parameter.
  323.  
  324. HOW TO MAKE A 1.3 OR 2.0 OR LATER  KICKSTART
  325.  
  326. As a developer, you can obtain a new superkickstart image from CBM or
  327. via closed listing sections on BIX. UnLharc the file and copy it to
  328. the devs: directory to a file called Kickstart.
  329.  
  330. If you have a SuperKickstart Disk, on your 2.0 A3000 install disk is a script 
  331. file called Update2.0x. This script will create an A3000 kickstart from your 
  332. Superkickstart disk as Devs:Kickstart. For 1.3, you need the A3000 1.3 
  333. SuperKickstart Disk and use the following command from the tools directory of 
  334. the A3000 1.3 Install disk:
  335.  
  336.       Makefiles df0: 1.3 devs:Kickstart1.3
  337.  
  338. Note that you need to have the 2.0 (or later) fastfilesystem installed on all 
  339. your hard drive partitions when you use 1.3 via the ONETHREE option. Use 
  340. HDToolBox to load the proper fastfilesystem from the l: directory of your 
  341. 2.04 A3000 Install disk (or wherever it may reside on future releases).
  342.  
  343. VISUAL DIFFERENCES
  344.  
  345. Whenever you reboot with the Vulcan Neck Pinch (Ctrl-LAmiga-RAmiga), you 
  346. will see a slight difference in screen behavior compared to what you are 
  347. accustomed. You will see two cycles through the black to white screen 
  348. transitions (V37 only. V39 keeps the screen black, so the second trip through
  349. the ROM is not as obvious). The MMU is turned off on a hardware reset. The 
  350. first set of color changes is the motherboard ROM taking over. SoftBoot magic 
  351. then restores the MMU and jumps to the RAM-based ROM image, causing the second 
  352. trip through the monochrome spectrum. You will get used to it and will use it 
  353. to know when you are RAM-based versus motherboard-based.
  354.  
  355. DOWNERS
  356.  
  357. You must obey the following rules concerning RAD: 1) Never, repeat Never
  358. ever mount RAD: and then try to SoftBoot. Softboot first, then mount RAD:
  359. (Note the way the DOSDRIVERS drawer is accessed in Kickstart 3.0 really 
  360. helps you run SoftBoot before mounting RAD). Use the KILLROM option to remove 
  361. RAD: before SoftBooting. RAD: works from the top of memory down. SoftBoot 
  362. also wants to put the ROM at the top of memory. As you might guess, neither 
  363. wins when SoftBoot is executed! 2) Always use the BOTH option if you are going 
  364. to use both CPUs and expect RAD: to recover. RAD: seems to work much better 
  365. then because memory allocation is similar between CPU states. If you don't use 
  366. the BOTH option, RAD: will lock up the machine up when switching CPUs. It will
  367. recover until you make the switch, however. Usually it will either hang 
  368. at the white (Black for V39) screen or continously cycle through the shades 
  369. of grey. You will have to power down to recover.
  370.  
  371. I tried hard to make this program work on the A2500/030/020. The major 
  372. problem was that the Reset command caused the loss of all chip and fastram and 
  373. the program would lock up. As a result, this version of SoftBoot is very
  374. A3000 specific. I will be coming out with special versions to support particular 
  375. A2000/040 combinations. Also CBM does not generally make newer beta versions 
  376. of the A2000 operating system available linked at F80000, but rather at 200000.
  377.  
  378. The ONETHREE option and the Devs:Kickstart1.3 file are specific to the A3000 
  379. and a stock 1.3 kickstart image must not be used in its place.
  380.  
  381. It must be understood that you have replaced your Alpha superkickstart ROMs with
  382. some later version, probably V2.04. Softboot requires V2.04 or later ROMS
  383. in your machine. My A3000 is running custom-made Eproms of a much later verison.
  384. I suspect that 3.0 ROMs will not give SoftBoot any problems.
  385.  
  386. VUNERABILITIES
  387.  
  388. Softboot can be killed in one of several ways. They all require an errant
  389. program to write over a sensitive area of memory. First, the ROM image itself
  390. can be corrupted if the transparent translation register is enabled. 
  391. Second, the MMU tables cannot be protected. Third, the Romtag used for
  392. reboot recovery may get written over. And finally, the ExecBase structure
  393. could be corrupted.
  394.  
  395. To help protect the tables (and ROM in 68040 mode), I allocate an extra 256
  396. bytes around each item, to help prevent the OS (MemList tails) and broken
  397. programs from overwriting critical data. The ROM is write protected at
  398. the logical address but is vunerable if the transparent translation
  399. registers are enabled as the physical address would not be protected;
  400. the MMU tables are ignored in areas where the transparent translation 
  401. registers are active. SoftBoot has been made as safe as it can be.
  402.  
  403. ENFORCER
  404.  
  405. Please use the new Enforcer, V37.26 or later. It is foreign MMU tolerent.
  406. When it exits, it will return to the previous SoftBoot MMU setup.
  407.  
  408. HISTORY
  409.  
  410. Current Version is 3.31
  411.  
  412. 3.31 - All memory allocations are now checked to see that they are on
  413. the motherboard RAM. Should any MMU table not be allocated in the proper
  414. area, the program will print an appropriate message and exit after 
  415. returning all resources back to the old OS with no damage to the old OS.
  416.  
  417. Reordering of functions allowed the used of _LVOSumKickData() again. The
  418. in-line code was removed.
  419.  
  420. 3.30 - The MMU table fill routine was pulled out of main() and made into
  421. two separate routines: one for 1.3 and one for 2.0+. This allows me to
  422. change the code so I can delay the final Disable() until just before 
  423. the new OS is launched.
  424.  
  425. Caches are turned off early in the program. This required additional
  426. flushing at several points to prevent hanging.
  427.  
  428. Supervisor() was SetFunction()ed to guarantee it would be available
  429. after the old ROM was corrupted; SumKickData was in-lined. Now Softboot 
  430. cannot hang because the new OS has different LVOs than the last one or
  431. depend on certain instructions & data to be in the cache.
  432.  
  433. The net result is that you can reload any OS on top of another without
  434. worrying about corruption, or the need to make a special boot disk for
  435. ONETHREE, for example. You can go directly from 3.0 to 1.3 now no matter
  436. what the status of the MMU or memory allocation situation.
  437.  
  438. 3.27 - It was realized that older SoftBoots can now crash because the
  439. OVRMMU option allows one rom image to be written over the same memory area.
  440. Previous version worked (sometimes) because LVOs didn't change or the
  441. instruction cache contained the old rom code, while the data cache
  442. had (from the copy of) the new ROM image. The first cut at minimizing
  443. the problems with this was made, in particular, getting the ONETHREE
  444. option to work with a MMUED OS. It didn't. And led to experimental
  445. versions 3.28 & 3.29.
  446.  
  447. 3.26 - Romtag assembled under SAS/C asm V6.00 (Previously used A68K PD
  448. assembler). Compiler made to use near data and code except for assembly 
  449. functions and data. Romtags Headers made invalid if SoftBoot will not be 
  450. loading a new OS and rebooting. Executable 800 bytes smaller than 3.22.
  451.  
  452. 3.25 - Same as 3.25 but C code compiled under SAS/C 6.00, previously
  453. used SAS/C 5.10b. 
  454.  
  455. 3.22 - Another bug found in Zorro III when tested with Progressive ProRAM64: 
  456. Index to 3rd level MMU tables incorrectly generated. Larger of 64K*SlotSize or 
  457. BoardSize is now used to determine span of board. System Memory lists also 
  458. scanned. Should run better on A4000.
  459.  
  460. 3.21 - Tested on A4000, was intermittant, but OK if run from bootup.
  461.  
  462. 3.20 - New Z3ALL option added, NOCACHEZ3 option made effective in MMU tables
  463. and ENTTX mode. Program code for SOFTBOOT parameter removed and ColdReboot() 
  464. used instead. 4K page mode removed. 68040 ROM patch search area increased from 
  465. first 20K to first 50K of ROM. ROM checksum patch search area increased to 
  466. first 10K of ROM. ColdReboot() setfunctioned to restore protected MMU 
  467. setup before system reset to prevent an unprotected ROM from getting
  468. allocated and corrupted, hanging the machine. ColdReboot() disables
  469. and dumps all caches (data, instruction, ATC) prior to reset. 
  470.  
  471. 3.14 - Version which had an option to make 4K or 8K page MMU Tables; Added
  472. the ENTTX option; New ZorroIII MMU table generation algorithm; OVRMMU option
  473. added. 4K mode known unstable in Softloaded OS, but stable in FASTROM.
  474.  
  475. 3.0 - Changed patch to Exec to make all 68040 MMU opcode nops rather than
  476. looking for a specific code sequence and branching around it. This will
  477. not break again unless the patches are moved away from the beginning of the 
  478. ROM.
  479.  
  480. 2.50 - Final Cleanup for Beta release to developer community for ADOS 2.0.
  481.        It worked until exec changed in 3.0.
  482.